Skip to content

quic: disable building ngtcp2 examples#62859

Open
Renegade334 wants to merge 1 commit intonodejs:mainfrom
Renegade334:skip-ngtcp2-examples
Open

quic: disable building ngtcp2 examples#62859
Renegade334 wants to merge 1 commit intonodejs:mainfrom
Renegade334:skip-ngtcp2-examples

Conversation

@Renegade334
Copy link
Copy Markdown
Member

@Renegade334 Renegade334 commented Apr 20, 2026

The ngtcp2 client and server examples are built with the intention of using them as reference implementations for future quic tests. However, as of ngtcp2 1.22.0, these examples are using c++-23 libraries, which doesn't match the current Node.js build requirements.

These reference implementations aren't used in any actual quic tests yet, so the path of least resistance is to disable these for now.

Refs: #59946
Refs: #62595 (comment)

The ngtcp2 client and server examples are built with the intention of
using them as reference implementations for future quic tests.
However, as of ngtcp2 1.22.0, these examples require c++-23 libraries,
which doesn't match the current Node.js build requirements.

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/gyp

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. labels Apr 20, 2026
@Renegade334 Renegade334 requested review from jasnell and pimterry April 20, 2026 20:10
@Renegade334 Renegade334 added quic Issues and PRs related to the QUIC implementation / HTTP/3. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. labels Apr 20, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.62%. Comparing base (c3dd52a) to head (50b8818).
⚠️ Report is 11 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #62859      +/-   ##
==========================================
+ Coverage   89.61%   89.62%   +0.01%     
==========================================
  Files         706      706              
  Lines      219136   219137       +1     
  Branches    41981    41980       -1     
==========================================
+ Hits       196376   196403      +27     
+ Misses      14671    14614      -57     
- Partials     8089     8120      +31     

see 43 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@panva panva added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs that have at least one approval, no pending requests for changes, and a CI started. labels Apr 21, 2026
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 21, 2026
@nodejs-github-bot

This comment was marked as outdated.

@pimterry
Copy link
Copy Markdown
Member

These reference implementations aren't used in any actual quic tests yet

Technically they are currently used, via the fixtures in test/common/quic/test-{client,server}.mjs and tests in test/parallel/test-quic-test-{client,server}.mjs. Those are just placeholder tests really, but to drop this we should drop those too. Imo we should just revert #59946 if we can't realistically use these as a test fixture any more - that means cleaning up the rests and removing the vendored examples entirely if we don't need them. We'll presumably want to replace this somehow for integration testing eventually, but we'll need to find a new solution.

Helpfully none of this is getting run in CI anyway right now (helpful because it's broken). It would be good to fix that separately as we steadily move towards potentially wrapping up QUIC. I won't derail this with that discussion but if anybody on the @nodejs/build team knows the current state of that I'd love to hear it, so we could work towards setting that up in the near future (just building with --experimental-quic and running the tests as normal) to catch issues like this and help with verifying future QUIC PRs.

All that said, @jasnell is currently in the middle of a big batch of new changes for QUIC, including tests, so he may already have plans here that could conflict with this PR. I'll let him chime in there, I think the current state of things is here if anybody wants to take a look, at a glance I don't see a direct conflict there yet myself.

@Renegade334
Copy link
Copy Markdown
Member Author

Renegade334 commented Apr 21, 2026

Technically they are currently used, via the fixtures in test/common/quic/test-{client,server}.mjs and tests in test/parallel/test-quic-test-{client,server}.mjs. Those are just placeholder tests really, but to drop this we should drop those too.

We are going to be committed to c++23 build support for V8 in the future, I'd guess for v27 (https://crbug.com/388070065), hence the rationale for just parking this rather than removing it entirely – and leaving the build targets and test wrappers extant means that interested individuals can always invoke them in a custom environment if desired.

If there is an alternative test implementation that's going to be switched over to then that's great as well, but I'm getting a bit bored of manually editing the build config every time I switch branches, and hot-merging this wouldn't preclude it being overwritten by a new solution – it would just unbreak builds in the meantime.

@pimterry
Copy link
Copy Markdown
Member

We are going to be committed to c++23 build support for V8 in the future

Ah ok, I wasn't aware of that. Makes sense to me, happy to merge this as a first step towards cleaning up the situation in any case.

@richardlau
Copy link
Copy Markdown
Member

Helpfully none of this is getting run in CI anyway right now (helpful because it's broken). It would be good to fix that separately as we steadily move towards potentially wrapping up QUIC. I won't derail this with that discussion but if anybody on the @nodejs/build team knows the current state of that I'd love to hear it, so we could work towards setting that up in the near future (just building with --experimental-quic and running the tests as normal) to catch issues like this and help with verifying future QUIC PRs.

I don't think anyone has asked the build team, so there is no current state.

For a CI with --experimental-quic the choices are:

  • New Jenkins CI job. Request via an issue to the Build WG over in nodejs/build.
  • GitHub actions job. Anyone can open a pull request to this repository.

The main differences are the Jenkins CI job runs on the donated servers that the Build WG controls -- the trade off being more limited number of people to update if the job needs to be edited. GitHub actions allows more people to edit (the whole collaborator base) but you are at the mercy of GitHub's runner changes (which may not matter for this particular case).

@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs that have at least one approval, no pending requests for changes, and a CI started. build Issues and PRs related to build files or the CI. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. needs-ci PRs that need a full CI run. quic Issues and PRs related to the QUIC implementation / HTTP/3.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants